RequestSlaveState

請求 EtherCAT 從站進入指定的 EtherCAT 狀態。例如,若狀態為 Op,而所請求的狀態為 PreOp,則從站狀態將會變更為 Op -> SafeOp -> PreOp;若狀態為 Init,而所請求的狀態為 Op,則從站狀態將會變更為 Init -> PreOp -> SafeOp -> Op。

語法

KsCommandStatus RequestSlaveState(
     int SlaveId,
     EthercatState State
);

參數

SlaveId:從站陣列的索引。當 EtherCAT 從站裝置啟動時,此索引具有與 SlaveId 相同的值,該值對應於從站裝置在網路中的位置。請注意,在 EtherCAT 進入運行 (Op) 狀態後,加入或移除網路上的任何從站裝置將改變各裝置在網路中的位置 (SlaveId)。儘管如此,從站的索引將保持不變。新增的裝置將排列在陣列的末端。對於更改後的所有從站,索引和 SlaveId 將不再匹配。上述行為模式僅適用於實體裝置;不適用於模擬裝置。詳細資訊請參閱 EnableHotConnect 中的使用案例。

State:請求的 EtherCAT 狀態。請見 EthercatState 類型。

回傳值

回傳 KsCommandStatus 結構。

備註

可用的 EtherCAT 狀態

ecatInit, ecatBoot, ecatPreOP, ecatSafeOP, ecatOP

範例

複製
SlaveStatus sStatus = { 0 };
nRet = GetSlaveById(0, &sStatus);
if (nRet == errNoError)
{
    if (sStatus.State != ecatOffline) {
        // You can follow the EtherCAT state diagram, or just enter the desired state.

        // Switch to Init
        WaitForCommand(3, TRUE, RequestSlaveState(0, ecatInit));

        // Operate the slave in Init state

        // Switch to Bootstrap
        WaitForCommand(3, TRUE, RequestSlaveState(0, ecatBoot));

        // Operate the slave in Bootstrap state

        // Switch back to original state
        WaitForCommand(3, TRUE, RequestSlaveState(0, sStatus.State));
    }
}

使用需求

  RT Win32
最低支援版本 4.0 4.0
標頭檔 ksapi.h ksapi.h
程式庫 KsApi_Rtss.lib KsApi.lib

參見

GetSlaveById

GetStatus

RequestState